/* 
 dom dom对象
 target {透明度，left，top} 不需要加px 
 cb 结束运动的函数 
*/
function move(dom,target,cb){
    //创建对象，存储每个样式所对应的定时器
    var obj2={}
    //遍历所有样式
    for(let attr in target){
        //清除定时器
        clearInterval(obj2[attr])
        //给obj2对象添加定时器
        obj2[attr]=setInterval(function(){
            //判断当前样式是否为透明度
            if(attr=="opacity"){
                var start=parseFloat(getStyle(dom,attr)*100)
            }else{
                var start=parseFloat(getStyle(dom,attr))
            }
            //设置步长
            var speed=(target[attr]-start)/20
            //判断当前步长是否大于0
            speed=speed>0?Math.ceil(speed):Math.floor(speed)
            //判断剩余量是否小于等于步长
            if(Math.abs(target[attr]-start)<=Math.abs(speed)){
                //清除定时器
                clearInterval(obj2[attr])
                //删除obj2对象中对应的定时器
                delete obj2[attr]
                //让当前对象移动到终点
                if(attr=='opacity'){
                    dom.style[attr]=target[attr]/100
                }else{
                    dom.style[attr]=target[attr]+'px'
                }

                //判断obj2对象中是否还存在键值对
                if(getLength(obj2)=='0'){
                    cb&&cb()  //调用回调函数
                }

            }else{
                if(attr=='opacity'){
                    dom.style[attr]=(start+speed)/100
                }else{
                    dom.style[attr]=start+speed+'px'
                }
            }

        },50)
    }
}
function getLength(obj){
    var a=0 //键值对的个数
    for(var i in obj){
        a++
    }
    return a
}
//获取该样式所对应的值
function getStyle(ele,attr){
    //兼容浏览器
    if(window.getComputedStyle){
        return window.getComputedStyle(ele)[attr]
    }else{
        return ele.currentStyle[attr]
    }
}